home *** CD-ROM | disk | FTP | other *** search
- package symantec.itools.awt;
-
- import java.awt.Color;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.Graphics;
- import java.awt.Image;
- import java.awt.MediaTracker;
- import java.awt.image.FilteredImageSource;
- import java.net.URL;
- import symantec.itools.lang.OS;
-
- public class ImageButton extends ButtonBase {
- protected boolean scale = false;
- private URL url = null;
- private Image enabledImage = null;
- private Image disabledImage = null;
- private boolean centerMode = true;
-
- public void setImageURL(URL var1) {
- this.enabledImage = null;
- if (this.disabledImage != null) {
- this.disabledImage.flush();
- }
-
- this.disabledImage = null;
- this.url = var1;
- Image var2 = ((Component)this).getToolkit().getImage(this.url);
- if (var2 != null) {
- MediaTracker var3 = new MediaTracker(this);
- if (var3 != null) {
- try {
- var3.addImage(var2, 0);
- var3.waitForAll();
- } catch (InterruptedException var4) {
- }
-
- if (var3.isErrorAny()) {
- System.err.println("Error loading image " + var2.toString());
- return;
- }
-
- this.enabledImage = var2;
- this.disabledImage = ((Component)this).createImage(new FilteredImageSource(var2.getSource(), new ImageButtonDisableFilter()));
- }
- }
-
- ((Component)this).invalidate();
- }
-
- public URL getImageURL() {
- return this.url;
- }
-
- public void setScaleMode(boolean var1) {
- if (this.scale != var1) {
- this.scale = var1;
- ((Component)this).invalidate();
- }
-
- }
-
- public boolean getScaleMode() {
- return this.scale;
- }
-
- public void setCenterMode(boolean var1) {
- if (this.centerMode != var1) {
- this.centerMode = var1;
- ((Component)this).invalidate();
- }
-
- }
-
- public boolean getCenterMode() {
- return this.centerMode;
- }
-
- public void paint(Graphics var1) {
- Image var2 = ((Component)this).isEnabled() ? this.enabledImage : this.disabledImage;
- if (var2 == null) {
- super.paint(var1);
- } else {
- this.paintHelper(var1, var2);
- Dimension var3 = ((Component)this).size();
- int var4 = super.bevel + 1 + super.pressedAdjustment;
- int var5 = super.bevel + 1 + super.pressedAdjustment;
- int var6 = var3.width - 1;
- int var7 = var3.height - 1;
- if (OS.isMacintosh()) {
- if (this.scale) {
- var4 = super.bevel + super.pressedAdjustment;
- var5 = super.bevel + super.pressedAdjustment;
- var1.drawImage(var2, var4, var5, var6 - super.bevel - super.bevel, var7 - super.bevel - super.bevel, this);
- } else {
- if (this.centerMode) {
- var4 += var6 - super.bevel - super.bevel - var2.getWidth(this) >> 1;
- var5 += var7 - super.bevel - super.bevel - var2.getHeight(this) >> 1;
- }
-
- var1.drawImage(var2, var4, var5, this);
- }
- } else {
- if (this.centerMode && !this.scale) {
- var4 += (var6 - var2.getWidth(this)) / 2;
- var5 += (var7 - var2.getHeight(this)) / 2;
- }
-
- if (this.scale) {
- var1.drawImage(var2, var4, var5, var6 - super.bevel * 2, var7 - super.bevel * 2, this);
- } else {
- var1.drawImage(var2, var4, var5, this);
- }
- }
- }
- }
-
- public void update(Graphics var1) {
- this.paint(var1);
- }
-
- private void paintHelper(Graphics var1, Image var2) {
- Dimension var3 = ((Component)this).size();
- int var4 = var3.width;
- int var5 = var3.height;
- int var10 = super.bevel + 1;
- int var11 = super.bevel + 1;
- int var12 = var4 - 1;
- int var13 = var5 - 1;
- int var6 = super.bevel + 1;
- int var7 = super.bevel + 1;
- int var8 = var2.getWidth(this);
- int var9 = var2.getHeight(this);
- var1.setColor(Color.lightGray);
- if (this.centerMode && !this.scale) {
- var6 += var4 - 1 - super.bevel - super.bevel - var8 >> 1;
- var7 += var5 - 1 - super.bevel - super.bevel - var9 >> 1;
- }
-
- if (super.pressed) {
- if (!this.scale) {
- var1.fillRect(0, 0, var6 + super.bevel, var5);
- var1.fillRect(var6 + var8 + super.bevel, 0, var4 - var6 + var8 + super.bevel, var5);
- var1.fillRect(var6 + super.bevel, 0, var8, var7 + super.bevel);
- var1.fillRect(var6 + super.bevel, var7 + var9 + super.bevel, var8, var5 - var7 + var9 + super.bevel);
- }
-
- int var10000 = var10 + (super.bevel > 0 ? 2 : 1);
- var1.setColor(Color.lightGray);
-
- for(int var14 = 1; var14 < super.bevel + 1; ++var14) {
- var1.drawLine(var14, var13 - var14, var12 - var14, var13 - var14);
- var1.drawLine(var12 - var14, var13 - var14, var12 - var14, var14);
- }
-
- var1.setColor(Color.gray);
-
- for(int var15 = 1; var15 < super.bevel + 1; ++var15) {
- var1.drawLine(var15, var13, var15, var15);
- var1.drawLine(var15, var15, var12, var15);
- }
- } else {
- if (!this.scale) {
- var1.fillRect(0, 0, var6, var5);
- var1.fillRect(var6 + var8, 0, var4 - var6 + var8, var5);
- var1.fillRect(var6, 0, var8, var7);
- var1.fillRect(var6, var7 + var9, var8, var5 - var7 + var9);
- }
-
- var1.setColor(Color.white);
-
- for(int var16 = 1; var16 < super.bevel + 1; ++var16) {
- var1.drawLine(var16, var13 - var16, var16, var16);
- var1.drawLine(var16, var16, var12 - var16, var16);
- }
-
- var1.setColor(Color.gray);
-
- for(int var17 = 1; var17 < super.bevel + 2; ++var17) {
- var1.drawLine(var17, var13 - var17, var12 - var17, var13 - var17);
- var1.drawLine(var12 - var17, var13 - var17, var12 - var17, var17);
- }
- }
-
- var1.setColor(Color.black);
- var1.drawLine(1, 0, var4 - 2, 0);
- var1.drawLine(0, 1, 0, var5 - 2);
- var1.drawLine(1, var5 - 1, var4 - 2, var5 - 1);
- var1.drawLine(var4 - 1, var5 - 2, var4 - 1, 1);
- if (super.showInfoTip && super.doInfoTip) {
- ((ButtonBase)this).drawInfoTip();
- }
-
- }
- }
-